#include "GY_TableViewDemo.h"
#include "ui_GY_TableViewDemo.h"
#include <QDebug>

GY_TableViewDemo::GY_TableViewDemo(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::GY_TableViewDemo)
{
    ui->setupUi(this);

    ui->tableView->setSelectionBehavior(QAbstractItemView::SelectRows);//一次选择一行
    ui->tableView->setSelectionMode(QAbstractItemView::SingleSelection); //设置选择模式，选择单行
    ui->tableView->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);//根据内容自动调整列宽
    ui->tableView->setEditTriggers(QTableView::EditTrigger::NoEditTriggers);//设置内容不能点击修改
    ui->tableView->setAlternatingRowColors(true);//隔行变色
//    setStyleSheet("QTreeView{background:transparent;}"); //使背景透明化
//    ui->tableView->setFrameStyle(QFrame::NoFrame); //设置无边框
}

GY_TableViewDemo::~GY_TableViewDemo()
{
    delete ui;
}

/**
 * @brief on_pushButton_setHead_clicked 设置列名
 */
void GY_TableViewDemo::on_pushButton_setHead_clicked()
{
    if(ui->textEdit->toPlainText()!= "请输入需设置的列名") //如果输入textEdit不为空
    {
        if(ui->columnEdit->text()!=nullptr) //如果输入列数不为空，设置对应的列名
        {
            ui->tableView->setColumnHeadName(ui->columnEdit->text().toInt(),ui->textEdit->toPlainText());
        }
        else //设置表头名
        {
            QStringList headList = ui->textEdit->toPlainText().split(','); //列名用','分割
            ui->tableView->setColumnHeadName(headList);
        }
    }
    else //输入需设置的列名
    {
        ui->textEdit->setText("请输入需设置的列名");
    }
}

/**
 * @brief on_pushButton_setColumnCount_clicked 设置列数
 */
void GY_TableViewDemo::on_pushButton_setColumnCount_clicked()
{
    if(ui->columnEdit->text()!=nullptr) //如果输入列数不为空，设置列数
    {
        ui->tableView->setColumnCount(ui->columnEdit->text().toInt());
        ui->textEdit->clear();
    }
    else
    {
        ui->textEdit->setText("请输入需设置的列数");
    }
}

/**
 * @brief on_pushButton_addRow_clicked  添加行数据
 */
void GY_TableViewDemo::on_pushButton_addRow_clicked()
{
    if(ui->textEdit->toPlainText()!=nullptr) //如果textEdit不为空，填充行数据
    {
        QStringList dataList = ui->textEdit->toPlainText().split(','); //行数据用','分割
        QVector<QVariant> dataVec;
        for(int i=0;i<dataList.size();i++)
        {
            dataVec<<dataList.at(i);
        }
        ui->tableView->addRowData(dataVec)
        qDebug()<<"行数据填充完毕";
    }
}

/**
 * @brief on_pushButton_addColumn_clicked  添加列/列数据
 */
void GY_TableViewDemo::on_pushButton_addColumn_clicked()
{
    if(ui->columnEdit->text()!=nullptr)//若列line不为空，添加新列，并将text作为新列的列名
    {
        if(ui->textEdit->toPlainText()!=nullptr) //如果textEdit不为空，填充列数据
        {
            QStringList columnDataList = ui->textEdit->toPlainText().split(','); //列数据用','分割
            QVector<QVariant> columnDataVec; //转换data数据类型
            for(int i=0;i<columnDataList.size();i++)
            {
                columnDataVec<<columnDataList.at(i);
            }
            ui->tableView->addColumnData(ui->columnEdit->text(),columnDataVec);
            qDebug()<<"列数据填充完毕";
        }
        else //否则添加空白列
        {
            ui->tableView->addColumn(ui->columnEdit->text());
        }
    }
    else
    {
        qDebug()<< "请输入列名称";
    }
}

/**
 * @brief on_pushButton_insert_clicked 插入数据按键（列、行数据）
 */
void GY_TableViewDemo::on_pushButton_insert_clicked()
{
    if(ui->textEdit->toPlainText()!=nullptr) //如果输入textEdit不为空
    {
        if(ui->columnEdit->text()!=nullptr) //如果列line不为空，插入列
        {
            ui->tableView->insterColumn(ui->columnEdit->text().toInt(),ui->textEdit->toPlainText());//插入在第几列及列名
        }
        else if(ui->rowEdit->text()!=nullptr)//如果行line不为空，插入行
        {
            QStringList rowDataList = ui->textEdit->toPlainText().split(','); //行数据用','分割
            QVector<QVariant> rowDataVec; //转换data数据类型
            for(int i=0;i<rowDataList.size();i++)
            {
                rowDataVec<< rowDataList.at(i);
            }
            ui->tableView->insertRowData(ui->rowEdit->text().toInt(),rowDataVec);//插入在第几行及行数据
        }
    }
    else {
        qDebug()<< "请输入需插入的内容";
    }
}

/**
 * @brief on_pushButton_setData_clicked 修改按键（行数据、单元格数据）
 */
void GY_TableViewDemo::on_pushButton_setData_clicked()
{
    if(ui->rowEdit->text()!=nullptr)//如果行line不为空，修改行数据
    {
        if(ui->columnEdit->text()!=nullptr) //如果列数据不为空，删除列
        {
            QVariant cellData = ui->textEdit->toPlainText();
            ui->tableView->setCellData(ui->rowEdit->text().toInt(),ui->columnEdit->text().toInt(),cellData);
        }
        else
        {
            QStringList rowDataList = ui->textEdit->toPlainText().split(','); //行数据用','分割
            QVector<QVariant> rowDataVec; //转换data数据类型
            for(int i=0;i<rowDataList.size();i++)
            {
                rowDataVec<< rowDataList.at(i);
            }
            ui->tableView->setRowData(ui->rowEdit->text().toInt(),rowDataVec);
        }
    }
    else {
        qDebug()<<"请输入需要修改的行数";
    }
}

/**
 * @brief on_pushButton_delete_clicked 删除（列、行数据）
 */
void GY_TableViewDemo::on_pushButton_delete_clicked()
{
    if(ui->columnEdit->text()!=nullptr) //如果列数据不为空，删除列
    {
        ui->tableView->deleteColumn(ui->columnEdit->text().toInt());
    }
    else if(ui->rowEdit->text()!=nullptr)//如果行line不为空，删除行
    {
        ui->tableView->deleteRow(ui->rowEdit->text().toInt());
    }
}

/**
 * @brief on_pushButton_getData_clicked 获取行/列数据
 */
void GY_TableViewDemo::on_pushButton_getData_clicked()
{
    if(ui->columnEdit->text()!=nullptr) //如果列数据不为空,获取列数据
    {
        qDebug()<< ui->tableView->getColumnData(ui->columnEdit->text().toInt());
    }
    else if(ui->rowEdit->text()!=nullptr) //如果行line不为空,获取行数据
    {
        qDebug()<< ui->tableView->getRowData(ui->rowEdit->text().toInt());
    }
    else
    {
        qDebug()<< "请选择要获取行或列";
    }
}

/**
 * @brief on_checkBox_Bold_clicked 设置行文字加粗显示
 */
void GY_TableViewDemo::on_checkBox_Bold_clicked()
{
    if(ui->rowEdit->text()!=nullptr) //如果行line不为空
    {
        ui->tableView->setTextBold(ui->rowEdit->text().toInt(),ui->checkBox_Bold->isChecked());
    }
}

/**
 * @brief on_radioButton_left_clicked 设置行文字居左显示
 */
void GY_TableViewDemo::on_radioButton_left_clicked()
{
    if(ui->radioButton_left->isChecked())
    {
        if(ui->rowEdit->text()!=nullptr) //如果行line不为空
        {
            ui->tableView->setTextLeft(ui->rowEdit->text().toInt());
        }
    }
}

/**
 * @brief on_radioButton_right_clicked 设置行文字居右显示
 */
void GY_TableViewDemo::on_radioButton_right_clicked()
{
    if(ui->radioButton_right->isChecked())
    {
        if(ui->rowEdit->text()!=nullptr) //如果行line不为空
        {
            ui->tableView->setTextRight(ui->rowEdit->text().toInt());
        }
    }
}

/**
 * @brief on_radioButton_center_clicked 设置行文字居中显示
 */
void GY_TableViewDemo::on_radioButton_center_clicked()
{
    if(ui->radioButton_center->isChecked())
    {
        if(ui->rowEdit->text()!=nullptr) //如果行line不为空
        {
            ui->tableView->setTextCenter(ui->rowEdit->text().toInt());
        }
    }
}
